import type { FormSchemaGetter } from '#/adapter/form';
import type { VxeGridProps } from '#/adapter/vxe-table';

import { getDictOptions } from '#/utils/dict';
import { renderDict } from '#/utils/render';

export const querySchema: FormSchemaGetter = () => [
  {
    component: 'Select',
    componentProps: {
      placeholder: '请选择组织id',
      // 可选从DictEnum中获取 DictEnum.SYS_USER_SEX 便于维护
      options: getDictOptions('sys_user_sex'),
      // 下拉框搜索时 使用 label值搜索
      optionFilterProp: 'label',
    },
    fieldName: 'deptId',
    label: '组织id',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'Input',
    componentProps: {
      placeholder: '请输入用户id',
    },
    fieldName: 'userId',
    label: '用户id',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'Input',
    componentProps: {
      placeholder: '请输入排序号',
    },
    fieldName: 'orderNum',
    label: '排序号',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'Input',
    componentProps: {
      placeholder: '请输入key键',
    },
    fieldName: 'testKey',
    label: 'key键',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'Select',
    componentProps: {
      placeholder: '请选择值',
      // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
      options: getDictOptions('wf_task_status'),
      // 下拉框搜索时 使用 label值搜索
      optionFilterProp: 'label',
      mode: 'multiple',
      // 展示选中数量 超出显示 +1…
      maxTagCount: 3,
      // 选中标签文字字符长度
      maxTagTextLength: 4,
      //
    },
    fieldName: 'value',
    label: '值',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'Select',
    componentProps: {
      placeholder: '请选择版本',
      // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
      options: getDictOptions('wf_task_status'),
      // 下拉框搜索时 使用 label值搜索
      optionFilterProp: 'label',
    },
    fieldName: 'version',
    label: '版本',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
  {
    component: 'RangePicker',
    componentProps: {
      showTime: true,
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
    },
    fieldName: 'createTime',
    label: '创建时间',
    // 隐藏Label 节省布局空间 直接用 placeholder 不需要可注释
    hideLabel: true,
    // 默认值
    // defaultValue: '',
  },
];

// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新
// export const columns: () => VxeGridProps['columns'] = () => [
export const columns: VxeGridProps['columns'] = [
  {
    type: 'checkbox',
    resizable: false,
    width: 60,
  },
  {
    title: '主键',
    field: 'id',
    minWidth: 160,
  },
  {
    title: '组织id',
    field: 'deptId',
    minWidth: 160,
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.SYS_USER_SEX 便于维护
        return renderDict(row.deptId, 'sys_user_sex');
      },
    },
  },
  {
    title: '用户id',
    field: 'userId',
    minWidth: 160,
  },
  {
    title: '排序号',
    field: 'orderNum',
    minWidth: 160,
  },
  {
    title: 'key键',
    field: 'testKey',
    minWidth: 160,
  },
  {
    title: '值',
    field: 'value',
    minWidth: 160,
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
        return renderDict(row.value, 'wf_task_status');
      },
    },
  },
  {
    title: '版本',
    field: 'version',
    minWidth: 160,
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
        return renderDict(row.version, 'wf_task_status');
      },
    },
  },
  {
    title: '创建时间',
    field: 'createTime',
    align: 'center',
    resizable: false,
    minWidth: 160,
    width: 160,
  },
  {
    title: '操作',
    field: 'action',
    fixed: 'right',
    resizable: false,
    slots: { default: 'action' },
    width: 'auto',
  },
];

export const modalSchema: FormSchemaGetter = () => [
  {
    label: '主键',
    fieldName: 'id',
    component: 'Input',
    componentProps: {
      placeholder: '请输入主键',
    },
    dependencies: {
      show: () => false,
      triggerFields: [''],
    },
  },
  {
    label: '组织id',
    fieldName: 'deptId',
    component: 'Select',
    componentProps: {
      placeholder: '请选择组织id',
      // 可选从DictEnum中获取 DictEnum.SYS_USER_SEX 便于维护
      options: getDictOptions('sys_user_sex'),
    },
  },
  {
    label: '用户id',
    fieldName: 'userId',
    component: 'Input',
    componentProps: {
      placeholder: '请输入用户id',
    },
  },
  {
    label: '排序号',
    fieldName: 'orderNum',
    component: 'Input',
    componentProps: {
      placeholder: '请输入排序号',
    },
  },
  {
    label: 'key键',
    fieldName: 'testKey',
    component: 'Input',
    componentProps: {
      placeholder: '请输入key键',
    },
  },
  {
    label: '值',
    fieldName: 'value',
    component: 'CheckboxGroup',
    componentProps: {
      placeholder: '请选择值',
      // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
      options: getDictOptions('wf_task_status'),
    },
  },
  {
    label: '版本',
    fieldName: 'version',
    component: 'Select',
    componentProps: {
      placeholder: '请选择版本',
      // 可选从DictEnum中获取 DictEnum.WF_TASK_STATUS 便于维护
      options: getDictOptions('wf_task_status'),
    },
  },
  {
    label: '创建时间',
    fieldName: 'createTime',
    component: 'DatePicker',
    componentProps: {
      // 因为判断了查询用的 between 表单中如果是选择起止日期
      // 自己改上面的 component: 'RangePicker'
      showTime: true,
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
    },
  },
];
